<?php

function template($file, $templateid = 0, $tpldir = '') {
	//模板源文件，此处$tplfile变量的值可能是D:\discuz\templates\default\demo.htm
	$tplfile = APP_PATH.'./template/'.$tpldir.'/'.$file.'.html';
	$objfile = DISCUZ_ROOT.'./forumdata/templates/'.
	$templateid.'_'.$file.'.tpl.php';//模板缓存文件，此处$objfile变量的值可能是D:\discuz\forumdata\templates\1_demo.tpl.php
	
	//如果模板源文件的修改时间迟于模板缓存文件的修改时间，
	//就是模板源文件被修改而模板缓存没有更新的时候，
	//则调用parse_template函数重新生成模板缓存文件。
	if(@filemtime($tplfile) > @filemtime($objfile)) {
		require_once DISCUZ_ROOT.'./include/template.func.php';
		parse_template($file, $templateid, $tpldir);
	}
	
	//返回缓存文件名称 
	//$objfile变量内容可能为D:\discuz\forumdata\templates\1_demo.tpl.php
	return $objfile;
}

function template2($file, $templateid = 0, $tpldir = '') {
	//模板源文件，此处$tplfile变量的值可能是D:\discuz\templates\default\demo.htm
	$tplfile = APP_PATH.'./template/'.$tpldir.'/'.$file.'.html';
	$objfile = DISCUZ_ROOT.'./forumdata/templates/'.
	$templateid.'_'.$file.'.tpl.php';//模板缓存文件，此处$objfile变量的值可能是D:\discuz\forumdata\templates\1_demo.tpl.php
	
	//如果模板源文件的修改时间迟于模板缓存文件的修改时间，
	//就是模板源文件被修改而模板缓存没有更新的时候，
	//则调用parse_template函数重新生成模板缓存文件。
	if(@filemtime($tplfile) > @filemtime($objfile)) {
		require_once DISCUZ_ROOT.'./include/template.func.php';
		parse_template($file, $templateid, $tpldir);
	}
	
	//返回缓存文件名称 
	//$objfile变量内容可能为D:\discuz\forumdata\templates\1_demo.tpl.php
	return $objfile;
}

//	公共函数
	function getDatetime(){
		return date('Y-m-d H:i:s');
	}

	/**
     * UTF-8编码字符串的截取
     *
     * @param string $str
     * @param int $len
     * @param string $dot
     * @return string
     */

	function substrcn($str, $len, $dot = ''){
		$patten = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
		preg_match_all($patten, $str, $regs);

        $v = 0; $s = '';
        for($i=0; $i<count($regs[0]); $i++){
            (ord($regs[0][$i]) > 129) ? $v += 2 : $v++;
            $s .= $regs[0][$i];
			if($v >= $len * 2){
                $s .= $dot;
    		break;
      		}
  		}
        return $s;
    }
	
function getgpc($k, $t='R') {
    switch($t) {
        case 'P': $var = &$_POST; break;
        case 'G': $var = &$_GET; break;
        case 'C': $var = &$_COOKIE; break;
        case 'R': $var = &$_REQUEST; break;
    }
    return isset($var[$k]) ? (is_array($var[$k]) ? $var[$k] : trim($var[$k])) : NULL;
}

function msubstr($str, $start, $len) {
    $str = trim ( $str );
    mb_substr ( $str, $start, $len, "UTF-8" );
    $tmpstr = mb_substr ( $str, $start, $len, "UTF-8" );
    return $tmpstr;
}
function onlineip() {
    $time = time ();
    $cip = getenv ( 'HTTP_CLIENT_IP' );
    $xip = getenv ( 'HTTP_X_FORWARDED_FOR' );
    $rip = getenv ( 'REMOTE_ADDR' );
    $srip = $_SERVER ['REMOTE_ADDR'];
    if ($cip && strcasecmp ( $cip, 'unknown' )) {
        $onlineip = $cip;
    } elseif ($xip && strcasecmp ( $xip, 'unknown' )) {
        $onlineip = $xip;
    } elseif ($rip && strcasecmp ( $rip, 'unknown' )) {
        $onlineip = $rip;
    } elseif ($srip && strcasecmp ( $srip, 'unknown' )) {
        $onlineip = $srip;
    }
    preg_match ( "/[\d\.]{7,15}/", $onlineip, $match );

    return $match [0] ? $match [0] : 'unknown';
}
function submitcheck() {
    return @getgpc ( 'formhash', 'P' ) == FORMHASH ? true : false;
}
function pr($a) {
    echo '<pre>';
    print_r ( $a );
    echo '</pre>';
}

function page($num, $perpage, $curpage, $mpurl)
{
    $multipage = '';
    $mpurl .= strpos($mpurl, '?') ? '&' : '?';
    if ($num > $perpage)
    {
        $page = 10;
        $offset = 2;

        $pages = @ceil($num / $perpage);

        if ($page > $pages)
        {
            $from = 1;
            $to = $pages;
        }
        else
        {
            $from = $curpage - $offset;
            $to = $from + $page - 1;
            if ($from < 1)
            {
                $to = $curpage + 1 - $from;
                $from = 1;
                if ($to - $from < $page)
                {
                    $to = $page;
                }
            }
            elseif ($to > $pages)
            {
                $from = $pages - $page + 1;
                $to = $pages;
            }
        }

        $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="' . $mpurl . 'page=1" class="first"' . $ajaxtarget . '>1 ...</a>' : '') . ($curpage > 1 && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage - 1) . '" class="prev"' . $ajaxtarget . '>&lsaquo;&lsaquo;</a>' : '');
        for ($i = $from; $i <= $to; $i++)
        {
            $multipage .= $i == $curpage ? '<strong>' . $i . '</strong>' : '<a href="' . $mpurl . 'page=' . $i . ($ajaxtarget && $i == $pages && $autogoto ? '#' : '') . '"' . $ajaxtarget . '>' . $i . '</a>';
        }

        $multipage .= ($curpage < $pages && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage + 1) . '" class="next"' . $ajaxtarget . '>&rsaquo;&rsaquo;</a>' : '') . ($to < $pages ? '<a href="' . $mpurl . 'page=' . $pages . '" class="last"' . $ajaxtarget . '>... ' . $realpages . '</a>' : '') . (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\'' . $mpurl . 'page=\'+this.value; return false;}" /></kbd>' : '');

        $multipage = $multipage ? '<div class="pages">' . (!$simple ? '<em>&nbsp;' . $num . '&nbsp;</em>' : '') . $multipage . '</div>' : '';
    }
    return $multipage;
}
function pageGetStart($page, $ppp, $totalnum)
{
    $totalpage = ceil ( $totalnum / $ppp );
    $page = max ( 1, min ( $totalpage, intval ( $page ) ) );
    return ($page - 1) * $ppp;
}


function dates($time, $type = 3)
{
    $format[] = $type & 2 ? ('Y-m-d') : '';
    $format[] = $type & 1 ? ('H:i:s') : '';
    return gmdate(implode(' ', $format), $time + 28800);
}


function _format_dateline(&$list)
{
    if (is_array($list))
    {
        foreach ($list as $key => $l)
        {
            $list[$key]['dateline'] = dates($l['dateline']);
        }
    }
}
?>
